{
  "title": "О программе",
  "text": "Программа \"Артиллерийская система\" позволяет симулировать процессы внутри артиллерийских батальонов, а также боевые процессы при управлении артиллерийскими установками.\nОбщие сведения:\n- Название программы: Артиллерийская система\n- Программное обеспечение, необходимое для функционирования программы: ОС Windows, Windows Command Prompt\n- Языки программирования, на которых написана программа: C++\n\nФункциональное назначение программы:\nСимуляция процедур управления и руководства боевыми артиллерийскими формированиями.\nПрограмма ведёт себя корректно при наличии необходимых файлов локализации, входящих в релизную сборку программы.\n\nОписание логической структуры:\nАрхитектурно программа состоит из трёх слоёв классов: репозитории, сервисы и классы интерфейса.\n- Репозитории отвечают за непосредственное хранение сущностей в памяти, а также ответственны за работу с файлами.\nОни предоставляют интерфейс получения, сохранения и удаления объектов.\n- Сервисы отвечают за взаимодействие между сущностями, а также предоставляют программный интерфейс для выполнения различных действий в системе.\n- Классы интерфейсов непосредственно ответственны за взаимодействие с пользователем. Они предоставляют пользовательский интерфейс.\n\nИспользуемые технические средства:\nМинимальные требования\n- ПЭВМ с микропроцессором от компании Intel или AMD с частотой не менее 1 ГГЦ\n- ОЗУ не менее 512 МБайт\n\nВызов и загрузка\n- Программа занимает примерно 2 МБайта, не учитывая файлов данных.\n- Входной точкой программы является artillerySystem.exe\n\nВходные и выходные данные:\nВходные и выходные данные представляют собой файлы данных программы, характеризующие объекты системы.\nПри заданном пути файлов данных, данные читаются по заданному пути в формате JSON, при изменении/добавление/удаление любого объекта в программе, в файл записывается новое состояние объектов.\nФайлы данных представляют собой 5 файлов:\nmissiles.json, имеющий такую структуру:\n[\n    {\n        \"calibre\": ..,\n        \"flightRange\": ..,\n        \"id\": ..,\n        \"impactArea\": ..,\n        \"length\": ..,\n        \"name\": ..,\n        \"speed\": ..,\n        \"weight\": ..\n    },\n    ..,\n    {\n        \"calibre\": ..,\n        \"flightRange\": ..,\n        \"id\": ..,\n        \"impactArea\": ..,\n        \"length\": ..,\n        \"name\": ..,\n        \"speed\": ..,\n        \"weight\": ..\n    }\n]\nsoldiers.json, имеющий такую структуру:\n[\n  {\n    \"firstname\": ..,\n    \"id\": ..,\n    \"rank\": ..,\n    \"specialization\": ..,\n    \"surname\": ..\n  },\n  ..\n  {\n    \"firstname\": ..,\n    \"id\": ..,\n    \"rank\": ..,\n    \"specialization\": ..,\n    \"surname\": ..\n  }\n]\nunits.json, имеющий такую структуру:\n[\n    {\n        \"aimX\": ..,\n        \"aimY\": ..,\n        \"crewId\": ..,\n        \"id\": ..,\n        \"missileId\": ..,\n        \"missilesCount\": ..,\n        \"name\": ..,\n        \"posX\": ..,\n        \"posY\": ..,\n        \"railsCount\": ..,\n        \"requiredSpecializations\": [\n            0,\n\t    ..,\n\t    3\n        ],\n        \"shotsDelay\": ..,\n        \"type\": \"launcher\"\n    },\n    ..\n    {\n        \"aimX\": ..,\n        \"aimY\": ..,\n        \"crewId\": ..,\n        \"id\": ..,\n        \"length\": ..,\n        \"maxSpeed\": ..,\n        \"missileId\": ..,\n        \"missilesCount\": ..,\n        \"name\": ..,\n        \"posX\": ..,\n        \"posY\": ..,\n        \"powerReserve\": ..,\n        \"preparingTime\": ..,\n        \"railsCount\": ..,\n        \"remainingPowerReserve\": ..,\n        \"requiredSpecializations\": [\n            0,\n\t    ..,\n\t    3\n        ],\n        \"shotsDelay\": ..,\n        \"type\": ..,\n        \"weight\": ..,\n        \"width\": ..\n    }\n]\nbattalions.json, имеющий такую структуру:\n[\n    {\n        \"id\": ..,\n        \"name\": ..,\n        \"unitsIds\": [..]\n    },\n    ..\n    {\n        \"id\": ..,\n        \"name\": ..,\n        \"unitsIds\": [..]\n    }\n]\ncrews.json, имеющий такую структуру:\n[\n    {\n        \"id\": ..,\n        \"soldiersIds\": [..]\n    },\n    {\n        \"id\": ..,\n        \"soldiersIds\": [..]\n    }\n]\n"
}